﻿//-----------------------------------------------------------------------
// <copyright file="SlotEnums.cs" company="tuliprules.org">
//     Copyright (c) 2011 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the SlotEnums enumerations.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Engine.Models.ClosedWorld
{
    /// <summary>
    /// Value roles
    /// </summary>
    /// <remarks>
    /// A value in a slot can be marked as either a default value or a template
    /// value.
    /// </remarks>
    public enum ValueRole
    {
        /// <summary>
        /// Default values for slots are set at the class level for 
        /// convenience and can be changed in subclasses and 
        /// instances of that class.
        /// </summary>
        Default,

        /// <summary>
        /// Templates values for slots are set at the class level and 
        /// can't be changed in subclasses and instances of that class.
        /// You can reset templates values at the class level. 
        /// </summary>
        Template
    }

    /// <summary>
    /// Value types
    /// </summary>
    /// <remarks>
    /// The type of value in the slot.
    /// value.
    /// </remarks>
    public enum ValueType
    {
        /// <summary>
        /// Any of the other types in this enumeration (logical Union) 
        /// </summary>
        Any,

        /// <summary>
        /// A logical, Boolean value; i.e., a value that is either true or false.
        /// </summary>
        Boolean,

        /// <summary>
        /// The slot takes one or more classes as values.
        /// </summary>
        Class,

        /// <summary>
        /// A floating-point number (number with a decimal point).
        /// </summary>
        Float,

        /// <summary>
        /// The slot takes one or more instances as values.
        /// </summary>
        Instance,

        /// <summary>
        /// An integer (a whole number).
        /// </summary>
        Integer,

        /// <summary>
        /// String of alphanumeric (ASCII) characters, possibly including spaces.
        /// </summary>
        String,

        /// <summary>
        /// The slot takes values from a list of strings you define 
        /// </summary>
        Symbol
    }
}

